package org.example.hansp.recursion;

public class Recursion01 {
    public static void main(String[] args) {
        reversionNumberAddOne(5);
        int arr[]={1,2,3,4,5};
        int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

        System.out.println("反转前的数组:");
        for (int i : array) {
            System.out.print(i + " ");
        }

        reverseArray(array, 0, array.length - 1);

        System.out.println("\n反转后的数组:");
        for (int i : array) {
            System.out.print(i + " ");
        }
        System.out.println();


        //
        int n=4;
        int factorial=factorial(n);
        System.out.println(n+"的阶层为： "+factorial);

    }

    /**
     * 输出从1到n
     * @param n
     */
    public static void reversionNumberAddOne(int n){
        if(n>1){
            reversionNumberAddOne(n-1);
        }
        System.out.println("n="+n);
    }

    public static void reverseArray(int[] arr,int start,int end){
        // 如果起始索引大于或等于结束索引，停止递归
        if(start>=end){
            return ;
        }
        // 交换数组起始索引和结束索引的元素
        int temp=arr[start];
        arr[start]=arr[end];
        arr[end]=temp;
        // 递归反转数组的剩余部分
        reverseArray(arr,start+1,end-1);
    }
public static int factorial(int n){
        if(n==1){
            return 1;
        }else {
            return n * factorial(n - 1);
        }
}


}
